// 一、声明式的定义函数
// ? 表示可选。
function fn001(a:number,b:string,c?:string){
    return a+b;
}


// fn001(12,"hi");
fn001(12,"hi","");


// 二、表达式的方式
// 1、定义函数和给函数赋值分开写
// 1）、定义函数变量，该函数的类型限定是：传入两个参数，第一个参数是string类型，第二个参数是number类型，返回值是number类型
let fn002:(a:string,b:number)=>number;

// 2)、给函数变量赋值
fn002 = function(a:string,b:number):number{
    return 12;
}

// 3）、调用函数
let t = fn002("hello",12);

t = 250;

// 2、定义函数和给函数赋值一起写

let fn003:(a:string,b:number)=>number = function(a:string,b:number):number{
    return 12;
}


// 三、用接口的方式定义一个函数类型，
// 1、定义一个类型（自定义类型）类型名是IFunc。限定是：两个参数，第一个参数是number类型，第二个参数是string；返回值是void（没有返回值）。
interface IFunc{
    (a:number,b:string):void
}

// 2、定义函数变量
let fn004:IFunc;

// 3、给函数变量赋值
fn004 = function(a:number,b:string){
    return "";
}

// 4、调用
let t02 = fn004(12,"23");


export default {

}